﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Arkanoid
{
    class Bola
    {
        public Texture2D textura;
        public Vector2 posicao;
        public Vector2 direcao;
        public Color color = Color.White;
        GraphicsDeviceManager graphics;
        public TimeSpan tempoUpgrade = TimeSpan.Zero;

        public bool ativo = true;
        public bool multBall = false;
        public bool bolaPerfurar = false;

        public Rectangle retangulo;

        public Bola(GraphicsDeviceManager graphics, Texture2D textura, Vector2 posicao, Vector2 direcao)
        {
            this.textura = textura;
            this.posicao = posicao;
            this.graphics = graphics;
            this.direcao = direcao;
        }

        public void Upgrade(GameTime gameTime)
        {
            if (bolaPerfurar)
            {
                color = Color.LightCoral;
                tempoUpgrade += gameTime.ElapsedGameTime;
                if (tempoUpgrade.Seconds > 5)
                {
                    color = Color.White;
                    bolaPerfurar = false;
                    tempoUpgrade = TimeSpan.Zero;
                }
            }
        }

        public void Update(GameTime gameTime)
        {
            if (ativo)
            {
                Upgrade(gameTime);

                retangulo = new Rectangle((int)posicao.X + 4, (int)posicao.Y + 4, textura.Width - 8, textura.Height - 9);
                posicao += direcao;

                if (direcao.X > 5)
                {
                    direcao.X = 5;
                }
                if (direcao.X < -5)
                {
                    direcao.X = -5;
                }
                if (direcao.X == 0)
                {
                    direcao.X = 1;
                }

                if (posicao.X >= graphics.PreferredBackBufferWidth - textura.Width && direcao.X > 0 || posicao.X <= 0 && direcao.X < 0)
                {
                    direcao.X *= -1;
                }

                if (posicao.Y <= 0 && direcao.Y < 0)
                {
                    direcao.Y *= -1;
                }

                if (posicao.Y > graphics.PreferredBackBufferHeight - textura.Height)
                {
                    ativo = false;
                }
            }
            
        }

        public void Draw(SpriteBatch spritBatch)
        {

            if (ativo)
            {
                spritBatch.Draw(textura, posicao, color); 
            }  
        }
    }
}
